# import matplotlib.pyplot as plt
# import pandas as pd
# df = pd.read_excel('学生各学期成绩表.xlsx')
# plt.figure(figsize=(10,8))
# x = df['序号']
# y = df['语文']
# plt.rcParams['font.sans-serif'] = 'SimHei'
# plt.title('学生各学期成绩分析')
# plt.xlabel('学期')
# plt.ylabel('成绩')
# for a,b in zip(df['序号'],df['语文']):
#     plt.text(a,b,'%.lf' % b,ha='center')
# plt.grid(axis='y')
# plt.xticks(range(11),df['学期'],rotation=15)
# plt.plot(x,y)
# plt.legend(('语文',))
# plt.show()
#
# import matplotlib.pyplot as plt
# import pandas as pd
# df = pd.read_excel('学生各学期成绩表.xlsx')
# plt.rcParams['figure.figsize'] = (10,6)
# plt.rcParams['font.sans-serif'] = 'SimHei'
# plt.rcParams['xtick.direction'] = 'in'
# plt.rcParams['ytick.direction'] = 'in'
# plt.title('学生各学期成绩分析')
# plt.xlabel('学期')
# plt.ylabel('成绩')
# plt.xticks(rotation=15)
# plt.grid()
# x = df['学期']
# plt.plot(x,df['语文'],'--^')
# plt.plot(x,df['数学'],'-.o')
# plt.plot(x,df['英语'],'r:d')
# plt.legend(['语文','数学','英语'])
# plt.show()

# import matplotlib.pyplot as plt
# import pandas as pd
# from cycler import cycler
# import numpy as np
# df = pd.read_excel('城镇单位就业人员年平均工资.xlsx',sheet_name='按行业',index_col=0)
# df.drop('城镇单位',inplace=True)
# df.drop(columns=['2001年','2002年'],inplace=True)
# df.sort_index(axis=1,inplace=True)
# plt.rcParams['figure.figsize'] = (12,8)
# plt.rcParams['font.sans-serif'] = 'SimHei'
# colors = []
# for i in range(len(df)):
#     r = np.random.rand()
#     g = np.random.rand()
#     b = np.random.rand()
#     colors.append((r,g,b))
# plt.rcParams['axes.prop_cycle'] = cycler(color=colors)
# plt.title('2003-2020年按行业分城镇单位就业人员年平均工资折线图')
# plt.xlabel('年份')
# plt.ylabel('平均工资/元')
# x = df.columns
# for index in df.index:
#     plt.plot(x,df.loc[index])
# plt.legend(df.index)
# plt.show()

#直方图
# import matplotlib.pyplot as plt
# import pandas as pd
# df = pd.read_excel('餐饮综合数据.xlsx',sheet_name='订单详情表',index_col=0)
# plt.rcParams['font.sans-serif'] = 'SimHei'
# x = df['价格']
# plt.xlabel('菜品价格/元')
# plt.ylabel('菜品数量')
# plt.title('不同价格区间菜品数量分布直方图')
# plt.hist(x,bins=12,color=(0.894,0,0.498),edgecolor='k')
# plt.show()


import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('cjd.xlsx',index_col=0)
plt.rcParams['font.sans-serif'] = 'SimHei'
x = df['数学']
plt.xlabel('数学成绩')
plt.ylabel('人数')
plt.title('数学成绩人数数量分布直方图')
plt.hist(x,bins=12,color=(0.894,0,0.498),edgecolor='k')
plt.show()

data = {
    '学科': ['语文', '数学', '英语', '物理', '化学'],
    '成绩': [92, 88, 95, 78, 85]
}

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_excel('产品销售表.xlsx', sheet_name=['第1分店', '第2分店', '第3分店'])
'''
作用：将字典中 3 家分店的DataFrame按顺序存入列表df_list，
方便后续用循环批量处理（避免重复写 3 次相同代码）。
简化写法：可以直接写成 df_list = [df['第1分店'], df['第2分店'], df['第3分店']]，效果相同。
'''
df_list = []
df_list.append(df['第1分店'])
df_list.append(df['第2分店'])
df_list.append(df['第3分店'])
width = 0.3

for i in range(len(df_list)):
    df_temp = df_list[i]
    # 删除数量列包含缺失值的行
    df_temp.dropna(axis=0, subset=['数量'], inplace=True)
    df_temp.drop_duplicates(inplace=True)  # 删除完全重复的行
    df_temp = df_temp.groupby('季度').agg('sum')
    x = df_temp.index
    height = df_temp['销售额（万元）']
    plt.bar(x + width * i, height, width)

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.ylabel('销售额/万元')
plt.legend(['第1分店', '第2分店', '第3分店'])
plt.xticks([1, 2, 3, 4], ['第1季度', '第2季度', '第3季度', '第4季度'])
plt.title('每个季度不同分店销售额柱状图')
plt.show()
'''
for i in range(len(df_list)):  # i=0,1,2 分别对应第1、2、3分店
    df_temp = df_list[i]  # 提取当前分店的数据（如i=0时是第1分店）

    # 数据清洗1：删除“数量”列有缺失值的行
    df_temp.dropna(axis=0, subset=['数量'], inplace=True)
    # 解释：
    # - dropna：删除缺失值（NaN）
    # - axis=0：按行删除（如果某行的“数量”是缺失值，就删掉这一行）
    # - subset=['数量']：只检查“数量”列的缺失值（其他列缺失不影响）
    # - inplace=True：直接在原表格上修改（不创建新表格）

    # 数据清洗2：删除完全重复的行
    df_temp.drop_duplicates(inplace=True)
    # 解释：如果表格中存在完全一样的行（可能是录入错误重复），就只保留一行。

    # 按季度分组，计算销售额总和
    df_temp = df_temp.groupby('季度').agg('sum')
    # 解释：
    # - groupby('季度')：按“季度”列的值（如1、2、3、4）分组，将同一季度的行归为一组。
    # - agg('sum')：对每组内的数值列（如“销售额（万元）”“数量”）求和。
    # 结果：得到一个新表格，索引是季度（1-4），列是各数值列的总和（我们只需要“销售额”）。

    # 准备x轴和y轴数据
    x = df_temp.index  # x轴：季度（1、2、3、4）
    height = df_temp['销售额（万元）']  # y轴：对应季度的销售额总和

    # 绘制柱状图（核心！）
    plt.bar(x + width * i, height, width)
    # 关键逻辑：通过x轴偏移实现“分组并排”
    # - 第1分店（i=0）：x坐标 = 季度 + 0.3*0 → 1,2,3,4
    # - 第2分店（i=1）：x坐标 = 季度 + 0.3*1 → 1.3,2.3,3.3,4.3
    # - 第3分店（i=2）：x坐标 = 季度 + 0.3*2 → 1.6,2.6,3.6,4.6
    # 这样3个分店的柱子在同一季度并排显示，不重叠。
'''